<< Índice

Algoritmo genético¶

El algoritmo genético es un tipo de algoritmo evolutivo donde se imita a la naturaleza y se hace uso del concepto darwiniano de la sobrevivencia del más fuerte. Según Gad, A., creador de la librería PyGAD para algoritmos evolutivos en python, el algoritmo genético se compone de 7 pasos:

  1. Creación de la población inicial
  2. Evaluación de la función de fitness
  3. Selección de los padres
  4. Piscina de apareamiento
  5. Variaciones (crossover y mutación)
  6. Nueva generacion
  7. Mejor solución ( Si la mejor solución no es hallada, se regresa al paso 2)

(2023, p.1)

Optimización de la función Rosenbrock con algoritmo genético para dos dimensiones¶

Recordemos que el valor óptimo de la función de Rosenbrock es en el punto (1,1) para dos dimensiones.

Procederemos a hacer el ejercicio en 2 y 3 dimensiones utilizando los siguientes parámetros:

num_generations = 2000, sol_per_pop = 10, um_parents_mating=5, num_genes=2, parent_selection_type="sss", fitness_func= fitness_fucntion, save_solutions=True, mutation_type = "random", mutation_percent_genes = 50,

No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No description has been provided for this image

La mejor solución obtenida al terminar el algoritmo fue el vector: [0.97914281 0.9591281 ] con un fitness de 0.9995485790582193

Your browser does not support the video tag.

Ahora hacemos el ejercicio en 3 dimensiones

No artists with labels found to put in legend.  Note that artists whose label start with an underscore are ignored when legend() is called with no argument.
No description has been provided for this image

La mejor solución obtenida al terminar el algoritmo fue el vector: [0.99163071 0.98074558 0.96253283] con un fitness de 0.9977667449103942

Ahora graficamos con respecto a X1 y X3:

Your browser does not support the video tag.

Ahora graficamos con respecto a X2, X3

Your browser does not support the video tag.

Ahora puedes volver al índice y seguir explorando el contenido:

<< Índice